package controlador;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;

import modelo.Cliente;
import modelo.ClienteDAO;
import modelo.Conexion;
import modelo.Ingrediente;
import modelo.IngredienteDAO;
import vista.FormIngrediente;

public class ControlIngrediente  implements ActionListener{
	
	private FormIngrediente fi;
	
	
	public ControlIngrediente() {
		super();
		this.fi = new FormIngrediente();
		this.fi.addListener(this);
	    this.fi.setVisible(true);
	    fi.setLocationRelativeTo(null);
	    Limpiar();
	}

	public void Limpiar()
	{
		fi.SettxtcodIng("");
	    fi.SetTxtNombre("");
	    fi.SetTxtexistencia("");
	    fi.SetTxtstockmin("");
	    fi.SetTxtstockmax("");
	    fi.EnabledBntEliminar(false);
	    fi.EnabledbntGuardar(false);
	    fi.EnabledbntBuscar(true);
	    fi.getTxtcodIng().enable(true);
		fi.getTxtexistencia() .enable(false);
		fi.getTxtnombre().enable(false);
		fi.getTxtstockmin().enable(false);
		fi.getTxtstockmax().enable(false);
	}
      
	public boolean BuscarCliente(boolean most)
	{
		try
		{
			IngredienteDAO DAO = new IngredienteDAO();
			ResultSet registro = DAO.BuscarIngrediente(fi.getTxtcodIng().getText());
		
    		if(registro.next())
    		{
    			String codingrediente = registro.getString("codingrediente");
				String nombre =  registro.getString("nombre");
				Integer stockminimo = registro.getInt("stockminimo");
				Integer stockmaximo = registro.getInt("stockmaximo");
				Float existencia = registro.getFloat("existencia");
                 
				Ingrediente ingrediente = new Ingrediente(codingrediente,nombre, stockminimo,stockmaximo,existencia);
				fi.SettxtcodIng(codingrediente);
				fi.SetTxtNombre(nombre);
				fi.SetTxtstockmin(stockminimo.toString());
				fi.SetTxtstockmax(stockmaximo.toString());
				fi.SetTxtexistencia(existencia.toString());
				fi.getTxtcodIng().enable(false);
				fi.EnabledBntEliminar(true);
			    fi.EnabledbntGuardar(false);
			    fi.EnabledbntBuscar(false);
				return true;
    		}
    		else
    		{
    			if (fi.getTxtcodIng().getText().equals(""))
    				fi.mostrarMensaje("tipee un codigo por favor");
    			else if(most)
    			{
    				fi.mostrarMensaje("No existe el ingrediente con este código!");
    				fi.EnabledBntEliminar(false);
    			    fi.EnabledbntGuardar(true);
    			    fi.EnabledbntBuscar(false);	
    			    fi.getTxtcodIng().enable(true);
    				fi.getTxtexistencia().enable(true);
    				fi.getTxtnombre().enable(true);
    				fi.getTxtstockmin().enable(true);
    				fi.getTxtstockmax().enable(true);
    			}
    			return false;
    		}
		}
		catch (SQLException f) {
			f.printStackTrace();
		}
		return false;
	}
	
	public void GuardarIngrediente(){
		if(!(fi.getTxtcodIng().getText().equals("")||fi.getTxtnombre().getText().equals("")||fi.getTxtexistencia().getText().equals("")||fi.getTxtstockmin().getText().equals("")||fi.getTxtstockmax() .getText().equals("") ) )         
		{	
			Ingrediente ingrediente = new  Ingrediente(
 	    	fi.getTxtcodIng().getText(),
 	    	fi.getTxtnombre().getText(),
 	    	Integer.parseInt(fi.getTxtstockmin().getText()),
 	    	Integer.parseInt(fi.getTxtstockmax().getText()),
 	    	Float.parseFloat(fi.getTxtexistencia().getText()));                                         
            
			IngredienteDAO DAO = new IngredienteDAO();
			DAO.RegistrarIngrediente(ingrediente.getCodingrediente(), ingrediente.getNombre(), ingrediente.getStockminimo(), ingrediente.getStockmaximo(), ingrediente.getExistencia());
 	  
			fi.mostrarMensaje("Ingrediente registrado con éxito!");
			Limpiar();  
		}
		else fi.mostrarMensaje("Llene todos los campos!");		
	}
	
	public void EliminarIngrediente(){
		IngredienteDAO DAO = new IngredienteDAO();
		DAO.EliminarIngrediente(fi.getTxtcodIng().getText());
			
		fi.mostrarMensaje("Ingrediente Eliminado con éxito!");
		Limpiar();
	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("B"))
			BuscarCliente(true); 
		else if (e.getActionCommand().equals("Guardar"))
			GuardarIngrediente();
		else if (e.getActionCommand().equals("Eliminar"))
			EliminarIngrediente();
		if (e.getActionCommand().equals("Cancelar"))
		{
			Limpiar();
			fi.getTxtcodIng().enable(true);
			fi.getTxtexistencia() .enable(false);
			fi.getTxtnombre().enable(false);
			fi.getTxtstockmin() .enable(false);
			fi.getTxtstockmax() .enable(false);
		}
		else if(e.getActionCommand().equals("S"))
		 	 fi.dispose();
	}	
}
